using System;

namespace SharpMud.Scripting.Processing
{
	/// <summary>
	/// Outlines the functionality for processing scriptlets into scripts
	/// </summary>
	public interface IScriptletProcessor
	{
		/// <summary>
		/// The script language that this scriptlet processor was designed to work with
		/// </summary>
		Metadata.IScriptLanguageDefinition ScriptletLanguage {get;}


		/// <summary>
		/// Process the given scriptlet into a script
		/// </summary>
		/// <returns></returns>
		ScriptSourceWrapper		ProcessScriptletToScript(ScriptletSourceWrapper scriptletSource);
		/// <summary>
		/// Process the given scriplets into scripts
		/// </summary>
		/// <param name="scriptletSource"></param>
		/// <returns></returns>
		ScriptSourceWrapper[]	ProcessScriptletsToScripts(ScriptletSourceWrapper[] scriptletSource);
		/// <summary>
		/// Process the given scriptlets into a single script
		/// </summary>
		/// <param name="scriptletSource"></param>
		/// <returns></returns>
		ScriptSourceWrapper		ProcessScriptletsToScript(ScriptletSourceWrapper[] scriptletSource);
	}
}
